/**
 * 格式化金额
 * @param {number} amount - 金额
 * @param {number} decimals - 小数位数
 * @returns {string} - 格式化后的金额
 */
export function formatCurrency(amount, decimals = 2) {
  if (amount === null || amount === undefined) return '0.00'
  return Number(amount).toFixed(decimals)
}

/**
 * 格式化日期
 * @param {string|Date} date - 日期
 * @param {string} format - 格式化模式
 * @returns {string} - 格式化后的日期
 */
export function formatDate(date, format = 'YYYY-MM-DD HH:mm:ss') {
  if (!date) return ''
  
  date = new Date(date)
  
  const year = date.getFullYear()
  const month = String(date.getMonth() + 1).padStart(2, '0')
  const day = String(date.getDate()).padStart(2, '0')
  const hours = String(date.getHours()).padStart(2, '0')
  const minutes = String(date.getMinutes()).padStart(2, '0')
  const seconds = String(date.getSeconds()).padStart(2, '0')
  
  return format
    .replace('YYYY', year)
    .replace('MM', month)
    .replace('DD', day)
    .replace('HH', hours)
    .replace('mm', minutes)
    .replace('ss', seconds)
}

/**
 * 防抖函数
 * @param {function} fn - 需要防抖的函数
 * @param {number} delay - 延迟时间（毫秒）
 * @returns {function} - 防抖处理后的函数
 */
export function debounce(fn, delay) {
  let timer = null
  return function(...args) {
    if (timer) clearTimeout(timer)
    timer = setTimeout(() => {
      fn.apply(this, args)
    }, delay)
  }
}

/**
 * 订单状态转文字
 * @param {number} status - 订单状态
 * @returns {string} - 状态文字描述
 */
export function orderStatusText(status) {
  const statusMap = {
    1: '待付款',
    2: '已付款/已确认',
    3: '配送中',
    4: '已完成',
    5: '已取消'
  }
  return statusMap[status] || '未知状态'
}

/**
 * 支付方式转文字
 * @param {number} method - 支付方式
 * @returns {string} - 支付方式文字描述
 */
export function paymentMethodText(method) {
  const methodMap = {
    1: '微信支付',
    2: '支付宝',
    3: '校园卡'
  }
  return methodMap[method] || '未知方式'
}

/**
 * 检查手机号是否有效
 * @param {string} phone - 手机号
 * @returns {boolean} - 是否有效
 */
export function isValidPhone(phone) {
  return /^1[3-9]\d{9}$/.test(phone)
}

/**
 * 检查邮箱是否有效
 * @param {string} email - 邮箱
 * @returns {boolean} - 是否有效
 */
export function isValidEmail(email) {
  return /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(email)
}

/**
 * 获取URL参数
 * @param {string} name - 参数名
 * @returns {string|null} - 参数值
 */
export function getUrlParam(name) {
  const reg = new RegExp(`(^|&)${name}=([^&]*)(&|$)`)
  const search = window.location.search.substr(1)
  const r = search.match(reg)
  if (r != null) return decodeURIComponent(r[2])
  return null
}

/**
 * 截断文本
 * @param {string} text - 原始文本
 * @param {number} length - 截断长度
 * @returns {string} - 截断后的文本
 */
export function truncateText(text, length = 20) {
  if (!text) return ''
  if (text.length <= length) return text
  return text.substring(0, length) + '...'
}

/**
 * 生成随机字符串
 * @param {number} length - 长度
 * @returns {string} - 随机字符串
 */
export function randomString(length = 8) {
  const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
  let result = ''
  for (let i = 0; i < length; i++) {
    result += chars.charAt(Math.floor(Math.random() * chars.length))
  }
  return result
} 